//SituationController.h
/*Header file for SituationController class, which facilitates the game
Created by: Taryn Green & Chris Groce
Updated: 10/14/2013
*/

#ifndef SITUATIONCONTROLLER_H
#define SITUATIONCONTROLLER_H

#include "Situation.h"
#include "../glOutput/Graphics.h"
//#include <boost/array.hpp>
#include <boost/asio.hpp>
//#include <boost/archive/text_oarchive.hpp>
//#include <boost/archive/text_iarchive.hpp>
//#include <boost/thread/thread.hpp>
#include "../networkIO/networkHandler.h"
//#include "../networkIO/situation_wrapper.h"
//class Graphics;

//using namespace std;

class SituationController
{
public:
	SituationController();		//Temporary constructor
	SituationController(Graphics *, networkI::networkHandler *);		//Constructor with references to GL and network. Should be called by GameControl
	void acceptGraphics(Graphics *);
	void setNetwork(networkI::networkHandler *);
	void turnLeft();
	void turnRight();
	void turnUp();
	void turnDown();
	void advanceLeft();
	void advanceRight();
	void advanceForward();
	void advanceBackward();
	void advanceUp();
	void advanceDown();
	void fire();
	void tick();		//Maybe with parameter
	void reconcile(Situation);
	void print();

private:
	Situation situation;
	Graphics *graphicController;
	networkI::networkHandler *networkController;
};

#endif

